package ordersystem.mapper;

import com.zqu.ordersystem.pojo.Carts;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper  // 标识为 MyBatis Mapper 接口
public interface CartMapper {

    // 根据用户 ID 查询购物车（注意：方法参数名为 userId，但 SQL 中使用 #{Id}，可能存在不匹配问题）
    @Select("SELECT * FROM carts WHERE id = #{Id}")
    Carts selectById(Integer userId);

    // 插入新的购物车记录，并返回生成的主键 ID
    @Insert("INSERT INTO carts (id, user_id) VALUES (null, #{userId})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")  // 使用数据库生成的主键，并将其设置到传入的对象中
    Integer insert(Carts carts);

    // 查询所有购物车记录（通常用于测试或管理员功能，生产环境中谨慎使用，因为可能返回大量数据）
    @Select("SELECT * FROM carts")
    List<Carts> selectAll();

    // 根据用户 ID 查询所有购物车记录
    @Select("SELECT * FROM carts WHERE user_id = #{userId}")
    List<Carts> selectByUserId(Integer userId);

    // 根据用户 ID 查询单个购物车记录（注意：如果一个用户有多个购物车，此方法可能无法正确返回单个记录）
    @Select("SELECT * FROM carts WHERE user_id = #{userId}")
    Carts selectByOneUserId(Integer userId);
}